/**
 * 
 */
package com.start;

import java.io.File;

import com.client.StartDown;
import com.server.StartServer;
import com.tool.Log;
import com.tool.Parameter;

import cn.hutool.core.util.StrUtil;

/**
 * 文件服务启动方法类
 * 
 * @author w_weizhen@sina.com
 * 
 */
public class StartDoor {
    
    /**
     * @param args
     */
    public static void main(String[] args) 
    {
        Log.log("开始校验配置文件!");
        //首先去校验配置文件中的必须参数,如果参数缺失则不能启动应用。
        //只在启动的时候校验一次,
        if(!verifyConfig())
        {
            Log.log("配置文件没有通过校验!程序未启动!");
            return;
        }
        Log.log("结束校验配置文件!");
        Log.log("创建相关目录!");
        //创建相关目录
        File data_path = new File(Parameter.data_path); if(!data_path.exists()){data_path.mkdir();}
        File log_path  = new File(Parameter.log_path);  if( !log_path.exists()){ log_path.mkdir();}
        File tmp_path  = new File(Parameter.tmp_path);  if( !tmp_path.exists()){ tmp_path.mkdir();}
        Log.log("开始启动"+(Parameter.isServer?"服务":"客户端")+"!");
        //如果是服务器,则启动服务
        if(Parameter.isServer)
        {
            StartServer.run();
        }
        //如果是客户端,则启动任务
        else
        {
            StartDown.run();
        }
        Log.log("已启动!");
    }
    // 校验参数是否全部在配置文件中
    private static boolean verifyConfig()
    {
        boolean verify = true;
        try {
            // 本地文件所在目录的路径 为空
            if(StrUtil.isBlank(Parameter.local_file))
            {
                Log.log("配置文件config.settig中local_file[本地文件所在目录的路径]没有配置!");
                verify = false;
            }
            else
            {
                //路径是否存在
                File file = new File(Parameter.local_file);
                if(!file.exists()||!file.isDirectory())
                {
                    Log.log("配置文件config.settig中local_file[本地文件所在目录的路径]不存在或不是一个文件夹!");
                    verify = false;
                }
            }
            //不是服务端,校验IP
            if(!Parameter.isServer&&StrUtil.isBlank(Parameter.server_uri))
            {
                Log.log("配置文件config.settig中server_uri没有配置!");
                verify = false;
            }
            // cron为空
            if(StrUtil.isBlank(Parameter.cron))
            {
                Log.log("配置文件config.settig中download_cron[时间间隔]没有配置!");
                verify = false;
            }
        } catch (Exception e) {
            verify = false;
            Log.log(e.toString());
        }
        return verify;
    }
}